package com.aabte.design2.structural.flyweight;

import lombok.Data;

/**
 * 享元类包含一个树的部分状态。这些成员变量保存的数值对于特定树而言是唯一
 * 的。例如，你在这里找不到树的坐标。但这里有很多树木之间所共有的纹理和颜
 * 色。由于这些数据的体积通常非常大，所以如果让每棵树都其进行保存的话将耗
 * 费大量内存。因此，我们可将纹理、颜色和其他重复数据导出到一个单独的对象
 * 中，然后让众多的单个树对象去引用它。
 *
 * @author Daniel
 * @version 1.0
 * @date 2020/5/3
 */
@Data
public class TreeType {

    private String name;
    private String color;
    private String texture;

    public TreeType(String name, String color, String texture) {
        this.name = name;
        this.color = color;
        this.texture = texture;
    }

    public void draw(int x, int y) {
        // 1. 创建特定类型、颜色和纹理的位图。
        // 2. 在画布坐标 (X,Y) 处绘制位图。
        System.out.println(String.format("draw tree. x = %s, y = %s, name = %s, color = %s, texture = %s",
                x, y, name, color, texture));
    }
}
